package Algorithm;

import java.util.Arrays;

public class test1 {
    // 移动零问题
    // 给定一个数组nums，编写一个函数将所有0移动到数组的末尾，同时保持非零元素的相对顺序
    // 算法原理: 双指针
    public static void main(String[] args) {
        int[] nums = {0, 1, 0, 3, 12};
        // dest表示已处理过的非零元素的最后一个位置
        // dest到cur之间表示0元素
        // cur之后表示待处理元素
        int dest = -1, cur;
        for (cur = 0; cur < nums.length; cur++) {
            if (nums[cur] != 0) {
                dest++;
                int tmp = nums[cur];
                nums[cur] = nums[dest];
                nums[dest] = tmp;
            }
        }
        System.out.println(Arrays.toString(nums));
    }
}
